# 从flask框架中导⼊Flask类,request对象，jsonify对象
from flask import Flask, request, jsonify
import requests
from pdf_extractor.PDFExtractor import extract_all
from ply_handler.PixelAnalyzer import to_ply_from_csv
from torch.rgb_conv import analysis,get_csv_from_palette
import os
# 传⼊__name__初始化⼀个Flask实例
app = Flask(__name__)


# PDFExtractor,文本内容提取的方法
@app.route('/PDFExtractor', methods=['POST'])
def back_PDFExtractor():
    # 判断path路径属性是否在请求中，xxx代指属性名称
    print(request.json)
    if 'path' not in request.json:
        return jsonify({'error': 'missing path'}), 400

    # # 获取请求中xxx的属性值
    path = request.json['path']
    print(path)

    # 使用PDFExtractor方法，获取保存的路径
    save_path = extract_all(path)


    # 假设 Spring Boot 接口的地址是 http://localhost:8080/receivePath
    spring_boot_url = 'http://192.168.2.35:8090/textRebuilder'

    # 将路径数据发送到 Spring Boot
    response = requests.get(spring_boot_url, params={'path': save_path})

    # 检查 Spring Boot 返回的响应
    if response.status_code == 200:
        # 返回结果给前端,以json格式返回
        return jsonify({'path': save_path})
    
    else:
        return jsonify({'error': 'Failed to send path to Spring Boot'}), 500




#PixelAnalyzer展示图片前后色彩密度
@app.route('/PixelAnalyzer', methods=['POST'])
def back_PixelAnalyzer():
    # 判断path路径属性是否在请求中，xxx代指属性名称
    if 'path' not in request.json:
        return jsonify({'error': 'missing path'}), 400

    # # 获取请求中xxx的属性值
    path = request.json['path']
    # 使用PixelAnalyzer方法，获取保存的路径
    save_path = to_ply_from_csv(path)
    # 返回结果给前端,以json格式返回
    return jsonify({'path': save_path})

#rgb_conv中analysis方法
@app.route('/rgb_conv', methods=['POST'])
def back_rgb_conv_analysis():
    # 判断path路径属性是否在请求中，xxx代指属性名称
    if 'path' not in request.json:
        return jsonify({'error': 'missing path'}), 400
    # 判断model路径属性是否在请求中，xxx代指属性名称
    if 'mode' not in request.json:
        return jsonify({'error': 'missing mode'}), 400


    # 获取请求中xxx的属性值
    path = request.json['path']
    mode = request.json['mode']

    if(mode==1):
        model="max_pooling"
    else:
        model="avg_pooling"

    # 使用PDFExtractor方法，获取保存的路径
    analysis(path, model)

    # 获取保存的路径
    # 获取目录部分
    directory = os.path.dirname(path)
    # 获取文件名部分
    filename = os.path.basename(path)
    # 获取文件名的基础部分（去除扩展名），然后加上新扩展名
    new_filename = os.path.splitext(filename)[0] + "_palette.png"
    png_path = os.path.join(directory, new_filename)

    csv_path = get_csv_from_palette(png_path)

    # 返回结果给前端,以json格式返回
    return jsonify({'png_path': png_path, 'csv_png': csv_path})



# 运⾏本项⽬，host=0.0.0.0可以让其他电脑也能访问到该⽹站，port指定访问的端⼝。
# 设置debug模式，方便开发
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=9000)